package Principal;

import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.query.Query;


public class Contador {
    
    public void altacontador(ObjectContainer b){        
        
        b.store(new AutoIncrement(1, "AutoIncrement", 1));
     
    }
    public void validar(ObjectContainer b ){
        Query cosulta = b.query();
        cosulta.constrain(AutoIncrement.class);
        cosulta.descend("clase").constrain("AutoIncrement").equal();
        ObjectSet resultado = cosulta.execute();
        
        if (resultado.size() <= 0) {
            altacontador( b);
        }
    } 
    
    public int nextId(String clase,ObjectContainer b ){
        Query cosulta = b.query();
        validar(b);
        AutoIncrement auto = null;
        cosulta.constrain(AutoIncrement.class);
        cosulta.descend("clase").constrain(clase).equal();
        ObjectSet resultado = cosulta.execute();
        
        if (resultado.size() > 0) {
                auto=(AutoIncrement) resultado.next();
                auto.setContador(auto.getContador()+1);
                b.store(auto);
                return auto.getContador();
           
        } else {
            b.store(new AutoIncrement(nextId("AutoIncrement", b), clase, 1));
            return 1;
        }
       
    }
   
}
 class AutoIncrement {
    int clave;
    String clase;
    int contador;

    public AutoIncrement() {
    }

    public AutoIncrement(int clave) {
        this.clave = clave;
    }

    public AutoIncrement(int clave, String clase, int contador) {
        this.clave = clave;
        this.clase = clase;
        this.contador = contador;
    }

    public String getClase() {
        return clase;
    }

    public int getClave() {
        return clave;
    }

    public int getContador() {
        return contador;
    }

    public void setClase(String clase) {
        this.clase = clase;
    }

    public void setClave(int clave) {
        this.clave = clave;
    }

    public void setContador(int contador) {
        this.contador = contador;
    }
    
}
